package com.situ.mall.common.service.impl;

import com.github.pagehelper.PageHelper;
import com.situ.mall.common.entity.Category;
import com.situ.mall.common.entity.Product;
import com.situ.mall.common.mapper.CategoryMapper;
import com.situ.mall.common.mapper.ProductMapper;
import com.situ.mall.common.service.IProductService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.situ.mall.common.vo.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;

/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @author lwj
 * @since 2023-09-12
 */
@Service
public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> implements IProductService {
        @Autowired
        private CategoryMapper categoryMapper;


    @Override
    public TableVO selectList(Integer page, Integer limit, String name, String status) {
        PageHelper.startPage(page,limit);

        TableVO data = TableVO.data(baseMapper.listProduct(name, status));
        return data;
    }

    @Override
    public void delete(String ids) {
        baseMapper.delete(ids.split(","));
    }

    @Override
    public EditProductVO edit(Integer id) {
        return baseMapper.edit(id);
    }


    //首页主要商品展示
    @Override
    public List<IndexProductVO> indexProducts(Integer parentId) {
        //接受的参数是一级分类id
        List<IndexProductVO> result = new ArrayList<>();
        List<Category> list = categoryMapper.select4(parentId);//根据父类id 查4个二级分类装在集合里
        for (Category c:list) { //遍历集合 每次从一个二级分类查出一个商品
            IndexProductVO p = baseMapper.selecProduct(c.getId());
            if(p!=null) {
                result.add(p);
            }
        }

        return result;
    }


    //今日推荐，首页展示一个,定时任务每日00：00刷新
    @Override
    public List<IndexProductVO> indexProducts0() {

        List<IndexProductVO> result = new ArrayList<>();
        List<Category> list = categoryMapper.select1(generateRandomNumbers());//根据父类id 查1个二级分类装在集合里
        for (Category c:list) { //遍历集合 每次从一个二级分类查出1个商品
            IndexProductVO p = baseMapper.selecProduct(c.getId());
            if(p!=null) {
                result.add(p);
            }
            //todo 随机数会重复生成
            //如果商品为空，则重新生成随机数，重新查
        }
        return result;
    }

    //生成随机数
    @Override
    public Integer generateRandomNumbers() {
        Random random = new Random();
        int randomNumber = random.nextInt(9) + 1; // 生成1到16之间的随机数

        LocalDateTime now = LocalDateTime.now();
        System.out.println("当前时间是：" + now);
        System.out.println("生成的随机数是：" + randomNumber);

        return randomNumber;
    }

    @Override
    public List<IntroductionProductVO> introductionProduct(Integer id) {

        List<IntroductionProductVO> vo = baseMapper.selectIntroductionProduct(id);

        return vo;
    }

    @Override
    public List<IndexProductVO> searchList(String keyword) {
        List<IndexProductVO> vo = baseMapper.searchList(keyword);

        return vo;
    }
}
